Many processors use some type of branch prediction to anticipate which instructions will be needed in a given instruction stream. Branch predictions are used to potentially increase the performance of the processor by speculatively fetching instructions that correspond to a predicted branch path. There are many conventional methods of predicting branch paths, speculatively fetching instructions, and resolving whether the predicted branch path is actually used or whether the predicted branch path is a misprediction.
If instructions for a predicted branch path are speculatively fetched, and the predicted branch path later turns out to be a mispredicted branch path, then there should be some way to invalidate the speculatively fetched instructions so that the pipeline resources can be allocated to other instructions. Although some conventional speculative instruction technologies use invalidation methods, these conventional invalidation methods are complex and difficult to implement or do not allow instant (atomic) invalidation of all mis-speculated instructions.